/*
  Esta implementacion de la organizacion Relativa fue realizada en Agosto del 2004
  para las primitivas propuestas por la catedra de Organizacion de Datos (75.06) FIUBA
  de la misma fecha (para mas detalles ver la descripcion de las primitivas).

  Aclaraciones:
  =============

  - Para el acceso a las celdas se considera a la primer celda la cero (0).
  - La funcion R_GETMAXREGS retorna el total de celdas (por ejemplo: 1000).
  - Si se crea un archivo con 1000 celdas el acceso a las mismas sera de la 0 a la 999.
  
  Agosto 2004
  La catedra.
  
*/
#ifndef RELATIVO_H
#define RELATIVO_H

#include "constantes.h"
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <errno.h>


/* Generales */
#define    R_MAX_OPEN_FILES  20

/* Estado de las celdas */
#define    R_LIBRE        0
#define    R_OCUPADO      1

typedef struct t_descriptorRel {
	int fd;
	int long_reg;
	int max_reg;
} t_descriptorRel;

int R_CREATE (const char* nombre_fisico, int tam_registro, int max_reg);
int R_OPEN (const char* nombre_fisico, int modo);
int R_CLOSE (int handler);
int R_SEEK (int handler, int nrec);
int R_READ (int handler, int nrec, void* reg);
int R_READNEXT (int handler, void* reg);
int R_WRITE (int handler, int nrec, const void* reg);
int R_UPDATE (int handler, int nrec, const void* reg);
int R_DELETE (int handler, int nrec);
int R_GETMAXREGS( int handler );
int R_DESTROY(const char* nombre_fisico);

#endif

